home *** CD-ROM | disk | FTP | other *** search
/ Aminet 50 / Aminet 50 (2002)(GTI - Schatztruhe)[!][Aug 2002].iso / Aminet / text / edit / tecoc-146.lha / execst.c < prev    next >
C/C++ Source or Header  |  1991-07-11  |  6KB  |  131 lines

  1. /*****************************************************************************
  2.  
  3.     ExeCSt()
  4.  
  5.     This function executes a TECO command string.  The string is pointed
  6. to by CBfPtr.  The last character in the string is pointed to by CStEnd.
  7.  
  8. *****************************************************************************/
  9.  
  10. #include "zport.h"        /* define portability identifiers */
  11. #include "tecoc.h"        /* define general identifiers */
  12. #include "defext.h"        /* define external global variables */
  13. #include "deferr.h"        /* define identifiers for error messages */
  14.  
  15. DEFAULT ExeCSt()        /* execute command string */
  16. {
  17.     DEFAULT status;
  18.     static DEFAULT (*FArray[])(VVOID) = {
  19. /*NUL*/ ExeNul,   /* ^A*/ ExeCtA,   /* ^B*/ ZExCtB,   /* ^C*/ ExeCtC,
  20. /* ^D*/ ExeCtD,   /* ^E*/ ExeCtE,   /* ^F*/ ExeNYI,   /* ^G*/ ExeIll,
  21. /* ^H*/ ZExCtH,   /* ^I*/ ExeCtI,   /* LF*/ ExeNul,   /* VT*/ ExeIll,
  22. /* ^L*/ ExeCtL,   /* CR*/ ExeNul,   /* ^N*/ ExeCtN,   /* ^O*/ ExeCtO,
  23. /* ^P*/ ExeCtP,   /* ^Q*/ ExeCtQ,   /* ^R*/ ExeCtR,   /* ^S*/ ExeCtS,
  24. /* ^T*/ ExeCtT,   /* ^U*/ ExeCtU,   /* ^V*/ ExeCtV,   /* ^W*/ ExeCtW,
  25. /* ^X*/ ExeCtX,   /* ^Y*/ ExeCtY,   /* ^Z*/ ExeCtZ,   /*ESC*/ ExeEsc,
  26. /* ^\*/ ExeIll,   /* ^]*/ ExeIll,   /* ^^*/ ExeCCC,   /* ^_*/ ExeUsc,
  27. /* SP*/ ExeNul,   /* ! */ ExeExc,   /* " */ ExeDQu,   /* # */ ExeOpr,
  28. /* $ */ ExeEsc,   /* % */ ExePrc,   /* & */ ExeOpr,   /* ' */ ExeNul,
  29. /* ( */ ExeOpr,   /* ) */ ExeRtP,   /* * */ ExeOpr,   /* + */ ExeOpr,
  30. /* , */ ExeCom,   /* - */ ExeOpr,   /* . */ ExeDot,   /* / */ ExeOpr,
  31. /* 0 */ ExeDgt,   /* 1 */ ExeDgt,   /* 2 */ ExeDgt,   /* 3 */ ExeDgt,
  32. /* 4 */ ExeDgt,   /* 5 */ ExeDgt,   /* 6 */ ExeDgt,   /* 7 */ ExeDgt,
  33. /* 8 */ ExeDgt,   /* 9 */ ExeDgt,   /* : */ ExeCln,   /* ; */ ExeSCl,
  34. /* < */ ExeLst,   /* = */ ExeEqu,   /* > */ ExeGtr,   /* ? */ ExeQes,
  35. /* @ */ ExeAtS,   /* A */ ExeA,     /* B */ ExeB,     /* C */ ExeC,
  36. /* D */ ExeD,     /* E */ ExeE,     /* F */ ExeF,     /* G */ ExeG,
  37. /* H */ ExeH,     /* I */ ExeI,     /* J */ ExeJ,     /* K */ ExeK,
  38. /* L */ ExeL,     /* M */ ExeM,     /* N */ ExeN,     /* O */ ExeO,
  39. /* P */ ExeP,     /* Q */ ExeQ,     /* R */ ExeR,     /* S */ ExeS,
  40. /* T */ ExeT,     /* U */ ExeU,     /* V */ ExeV,     /* W */ ExeW,
  41. /* X */ ExeX,     /* Y */ ExeY,     /* Z */ ExeZ,     /* [ */ ExeLBr,
  42. /* \ */ ExeBSl,   /* ] */ ExeRBr,   /* ^ */ ExeCrt,   /* _ */ ExeUnd,
  43. /* ` */ ExeIll,   /* a */ ExeA,     /* b */ ExeB,     /* c */ ExeC,
  44. /* d */ ExeD,     /* e */ ExeE,     /* f */ ExeF,     /* g */ ExeG,
  45. /* h */ ExeH,     /* i */ ExeI,     /* j */ ExeJ,     /* k */ ExeK,
  46. /* l */ ExeL,     /* m */ ExeM,     /* n */ ExeN,     /* o */ ExeO,
  47. /* p */ ExeP,     /* q */ ExeQ,     /* r */ ExeR,     /* s */ ExeS,
  48. /* t */ ExeT,     /* u */ ExeU,     /* v */ ExeV,     /* w */ ExeW,
  49. /* x */ ExeX,     /* y */ ExeY,     /* z */ ExeZ,     /* { */ ExeIll,
  50. /* | */ ExeBar,   /* } */ ExeIll,   /* ~ */ ExeIll,   /*DEL*/ ExeIll,
  51. /*129*/ ExeIll,   /*130*/ ExeIll,   /*131*/ ExeIll,   /*132*/ ExeIll,
  52. /*133*/ ExeIll,   /*134*/ ExeIll,   /*135*/ ExeIll,   /*136*/ ExeIll,
  53. /*137*/ ExeIll,   /*138*/ ExeIll,   /*139*/ ExeIll,   /*140*/ ExeIll,
  54. /*141*/ ExeIll,   /*142*/ ExeIll,   /*143*/ ExeIll,   /*144*/ ExeIll,
  55. /*145*/ ExeIll,   /*146*/ ExeIll,   /*147*/ ExeIll,   /*148*/ ExeIll,
  56. /*149*/ ExeIll,   /*150*/ ExeIll,   /*151*/ ExeIll,   /*152*/ ExeIll,
  57. /*153*/ ExeIll,   /*154*/ ExeIll,   /*155*/ ExeIll,   /*156*/ ExeIll,
  58. /*157*/ ExeIll,   /*158*/ ExeIll,   /*159*/ ExeIll,   /*160*/ ExeIll,
  59. /*161*/ ExeIll,   /*162*/ ExeIll,   /*163*/ ExeIll,   /*164*/ ExeIll,
  60. /*165*/ ExeIll,   /*166*/ ExeIll,   /*167*/ ExeIll,   /*168*/ ExeIll,
  61. /*169*/ ExeIll,   /*170*/ ExeIll,   /*171*/ ExeIll,   /*172*/ ExeIll,
  62. /*173*/ ExeIll,   /*174*/ ExeIll,   /*175*/ ExeIll,   /*176*/ ExeIll,
  63. /*177*/ ExeIll,   /*178*/ ExeIll,   /*179*/ ExeIll,   /*180*/ ExeIll,
  64. /*181*/ ExeIll,   /*182*/ ExeIll,   /*183*/ ExeIll,   /*184*/ ExeIll,
  65. /*185*/ ExeIll,   /*186*/ ExeIll,   /*187*/ ExeIll,   /*188*/ ExeIll,
  66. /*189*/ ExeIll,   /*190*/ ExeIll,   /*191*/ ExeIll,   /*192*/ ExeIll,
  67. /*193*/ ExeIll,   /*194*/ ExeIll,   /*195*/ ExeIll,   /*196*/ ExeIll,
  68. /*197*/ ExeIll,   /*198*/ ExeIll,   /*199*/ ExeIll,   /*200*/ ExeIll,
  69. /*201*/ ExeIll,   /*202*/ ExeIll,   /*203*/ ExeIll,   /*204*/ ExeIll,
  70. /*205*/ ExeIll,   /*206*/ ExeIll,   /*207*/ ExeIll,   /*208*/ ExeIll,
  71. /*209*/ ExeIll,   /*210*/ ExeIll,   /*211*/ ExeIll,   /*212*/ ExeIll,
  72. /*213*/ ExeIll,   /*214*/ ExeIll,   /*215*/ ExeIll,   /*216*/ ExeIll,
  73. /*217*/ ExeIll,   /*218*/ ExeIll,   /*219*/ ExeIll,   /*220*/ ExeIll,
  74. /*221*/ ExeIll,   /*222*/ ExeIll,   /*223*/ ExeIll,   /*224*/ ExeIll,
  75. /*225*/ ExeIll,   /*226*/ ExeIll,   /*227*/ ExeIll,   /*228*/ ExeIll,
  76. /*229*/ ExeIll,   /*230*/ ExeIll,   /*231*/ ExeIll,   /*232*/ ExeIll,
  77. /*233*/ ExeIll,   /*234*/ ExeIll,   /*235*/ ExeIll,   /*236*/ ExeIll,
  78. /*237*/ ExeIll,   /*238*/ ExeIll,   /*239*/ ExeIll,   /*240*/ ExeIll,
  79. /*241*/ ExeIll,   /*242*/ ExeIll,   /*243*/ ExeIll,   /*244*/ ExeIll,
  80. /*245*/ ExeIll,   /*246*/ ExeIll,   /*247*/ ExeIll,   /*248*/ ExeIll,
  81. /*249*/ ExeIll,   /*250*/ ExeIll,   /*251*/ ExeIll,   /*252*/ ExeIll,
  82. /*253*/ ExeIll,   /*254*/ ExeIll,   /*255*/ ExeIll,   /*256*/ ExeIll
  83.     };
  84.  
  85.     DBGFEN(4,"ExeCSt",NULL);
  86.  
  87.     while (CBfPtr <= CStEnd) {        /* while more commands */
  88.         if (TraceM) {            /* if trace mode is on */
  89.             EchoIt(*CBfPtr);    /* display the command */
  90.         }
  91.  
  92.         status = (*FArray[*CBfPtr])();    /* execute command */
  93.  
  94. #if CONSISTENCY_CHECKING
  95.         check_consistency();
  96. #endif
  97.  
  98. #if CHECKSUM_CODE
  99.         check_code_checksums ();
  100. #endif
  101.  
  102.         ZCHKKB();            /* kludge for MS-DOS only */
  103.  
  104.         if (GotCtC) {            /* if got a control-C */
  105.             GotCtC = FALSE;
  106.             ErrMsg(ERR_XAB);    /* XAB = execution aborted */
  107.             DBGFEX(4,DbgFNm,"SUCCESS");
  108.             return SUCCESS;
  109.         }
  110.  
  111.         if (status == FAILURE) {    /* did command fail? */
  112.             if (EtFlag & ET_MUNG_MODE) {    /* if in mung mode */
  113.                 TAbort(EXIT_FAILURE);    /* ... terminate */
  114.             } else {
  115.                 DBGFEX(4,DbgFNm,"FAILURE");
  116.                 return FAILURE;
  117.             }
  118.         }
  119.  
  120.         CBfPtr++;            /* move to next command */
  121.     }
  122.  
  123.     if (LStTop != LStBot) {            /* if unclosed loop */
  124.         ErrUTC();            /* unterminated command */
  125.     }
  126.  
  127.     DBGFEX(4,DbgFNm,"SUCCESS");
  128.  
  129.     return SUCCESS;
  130. }
  131.